1827
22958
Mám soubor dat, jak je uvedeno níže
jméno col1 col2
a 10,3 10.9
b 11 15
c 20 7.2
d 6.2 6.2
e 5.3 5.4
f 4,5 4,0
Chci porovnat col1 a col2 mého df a chci vytvořit další sloupec, ve kterém při porovnávání hodnot col1 a col2, pokud se hodnota col2 zvyšuje z col1, pak chci zadat zvýšení vedle nich v mém sloupci a pokud jsou klesající pak chci psát klesající a žádné změny, pokud jsou stejné
a chci svůj výstup takhle
jméno col1 col2 col3
a 10,3 10,9 zvýšení
b 11 15 se zvyšuje
c 20 7,2 klesá
d 6,2 6,2 beze změny
e 5,3 5,4 se zvyšuje
f 4,5 4,0 klesá 
S dplyr:
df%>%
mutovat (Col3 = ifelse (col2 == col1,
"žádná změna",
ifelse (col2> col1,
"rostoucí", "klesající")))
Nebo pomocí case_when, jak navrhuje @akrun:
df%>%
mutovat (Col3 = case_when (col1 == col2 ~ "žádná změna",
col2> col1 ~ "Zvyšování",
TRUE ~ "klesající"))
Výsledek:
jméno col1 col2 col3
1 a 10,3 10,9 se zvyšuje
2 b 11,0 15,0 zvýšení
3 c 20,0 7,2 klesá
4 d 6,2 6,2 beze změny
5 e 5,3 5,4 se zvyšuje
6 f 4,5 4,0 klesá
Data:
df <-structure (list (name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6,2, 5,3, 4,5), col2 = c (10,9, 15, 7,2, 6,2, 5,4, 4)), class = "data.frame", row.names = c (NA,
-6L))
|
Můžeme odečíst col1 od col2 a poté pomocí znaménka přiřadit hodnoty
df $ col3 <- c ("klesající", "beze změny", "rostoucí") [znaménko (df $ col1 - df $ col2) + 2]
df
# název col1 col2 col3
# 1 a 10,3 10,9 klesá
# 2 b 11,0 15,0 klesá
# 3 c 20,0 7,2 se zvyšuje
# 4 d 6,2 6,2 beze změny
# 5 e 5,3 5,4 klesá
# 6 f 4,5 4,0 roste
Nebo pomocí dplyr můžeme použít case_when
knihovna (dplyr)
df%>%
mutovat (col3 = case_when (col1 == col2 ~ "žádná změna",
col1> col2 ~ "rostoucí",
TRUE ~ "klesající"))
|
Základna R.
df $ col3 <-s (df, ifelse (col1> col2, "klesající",
ifelse (col1